import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/en'

import '@/styles/index.scss' // global css

import i18n from './lang'

import App from './App'
import router from './router'
import store from './store'

import '@/icons' // icon
import '@/permission' // permission control

import 'vue-event-calendar/dist/style.css' // 1.1.10之后的版本，css被放在了单独的文件中，方便替换
import vueEventCalendar from 'vue-event-calendar'
import VCharts from 'v-charts'

import toolBox from '@/common/utils/toolBox'
import btnPermission from '@/common/utils/btnPermission'
import downloadFile from '@/common/utils/downloadFileFunc'
import XLSX from 'xlsx/dist/xlsx.core.min.js'
// require
Vue.use(
  vueEventCalendar, {
    locale: 'zh',
    color: '#409EFF' // # 304156
  }
)

// import Tree from '@el/tree'
// import '@el/font/icon.css'
// import '@el/tree/tree.css'
// Vue.use(Tree)

/**
 * 转换成图片表情
 */
function toEmotion(text, isNoGif) {
  var list = ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷', '冷汗', '抓狂', '吐', '偷笑', '愉快', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '嘘', '晕', '折磨', '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓', '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '示爱', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球', '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻', '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '挥手', '激动', '街舞', '献吻', '左太极', '右太极', '嘿哈', '捂脸', '奸笑', '机智', '皱眉', '耶', '红包', '鸡'];

  if (!text) {
    return text;
  }

  text = text.replace(/\[[\u4E00-\u9FA5]{1,3}\]/gi, function (word) {
    var newWord = word.replace(/\[|\]/gi, '');
    var index = list.indexOf(newWord);
    var backgroundPositionX = -index * 24
    var imgHTML = '';
    if (index < 0) {
      return word;
    }

    if (isNoGif) {
      if (index > 104) {
        return word;
      }
      imgHTML = `<i class="static-emotion" style="background:url(https://res.wx.qq.com/mpres/htmledition/images/icon/emotion/default218877.gif) ${backgroundPositionX}px 0;"></i>`
    } else {
      var path = index > 104 ? '/img' : 'https://res.wx.qq.com/mpres/htmledition/images/icon';
      imgHTML = `<img class="static-emotion-gif" style="vertical-align: middle" src="${path}/emotion/${index}.gif">`
    }
    return imgHTML;
  });
  return text;
}


Vue.directive('emotion', {
  bind(el, binding) {
    el.innerHTML = toEmotion(binding.value)
  }
})


Vue.use(ElementUI, {
  locale,
  i18n: (key, value) => i18n.t(key, value)
})
Vue.use(VCharts)

Vue.config.productionTip = false

Vue.prototype.btnPermission = btnPermission;
Vue.prototype.downloadFile = downloadFile;
Vue.prototype.toolBox = toolBox;
Vue.prototype.XLSX = XLSX;

new Vue({
  el: '#app',
  router,
  store,
  i18n,
  template: '<App/>',
  components: {
    App
  }
})
